package sistema;

import controloBD.AcessoBD;
import controloBD.QueryResult;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

public class Equipa {

    private Long id_equipa;
    private String nome;
    private Long id_pais;
    private Long id_modalidade;

    public Equipa(Long id, String nome, Long id_pais, Long id_modalidade) {
        this.id_equipa = id;
        this.nome = nome;
        this.id_pais = id_pais;
        this.id_modalidade = id_modalidade;
    }

    private Equipa(Vector tabela) {
        this.id_equipa = (Long) tabela.get(0);
        this.nome = (String) tabela.get(1);
        this.id_pais = (Long) tabela.get(2);
        this.id_modalidade = (Long) tabela.get(3);
    }

    /**
     * @return the id_equipa
     */
    public Long getId_equipa() {
        return id_equipa;
    }

    public Long getIdMod() {
        return this.id_modalidade;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the id_pais
     */
    public Long getId_pais() {
        return id_pais;
    }

    /**
     * @param id_pais the id_pais to set
     */
    public void setId_pais(Long id_pais) {
        this.id_pais = id_pais;
    }

    public static void insereEquipa(Hashtable params) throws Exception {

        AcessoBD conexao = new AcessoBD();
        String qryName = new String("inserir_nova_equipa");
        conexao.executeUpdate(qryName, params);
        conexao.closeBD();

    }

    public static Equipa devolveEquipa(Long id_equipa) throws Exception {

        AcessoBD conexao = new AcessoBD();
        Hashtable<String, String> dadosEquipa = new Hashtable<String, String>();
        dadosEquipa.put("var_idequipa", id_equipa.toString());
        String qryName = new String("visualizar_equipa_por_id");
        QueryResult qr = new QueryResult();
        qr = conexao.executeSelect(qryName, dadosEquipa);
        conexao.closeBD();

        return new Equipa(qr.tabela());
    }

    public static Equipa pesquisaEquipaPorNome(String nomeEq) throws Exception {

        AcessoBD conexao = new AcessoBD();
        Hashtable<String, String> dadosEquipa = new Hashtable<String, String>();
        dadosEquipa.put("var_nome", nomeEq);
        String qryName = new String("visualizar_por_nome");
        QueryResult qr = new QueryResult();
        qr = conexao.executeSelect(qryName, dadosEquipa);
        conexao.closeBD();
        return new Equipa(qr.tabela());
    }

    public static List<Equipa> devolveTodas() throws Exception {
        AcessoBD conexao = new AcessoBD();
        String qryName = new String("devolve_todasEquipas");
        QueryResult qr = new QueryResult();
        qr = conexao.executeSelect(qryName, null);
        conexao.closeBD();

        List<Equipa> eq = new LinkedList<Equipa>();
        if (!qr.tabela().isEmpty()) {
            int i = 0;
            while (i != qr.tabela().size()) {
                while (i != qr.tabela().size()) {

                    Long id_equipa = (Long) qr.tabela().get(i);
                    String nome = (String) qr.tabela().get(i + 1);
                    Long id_pais = (Long) qr.tabela().get(i + 2);
                    Long id_modalidade = (Long) qr.tabela().get(i + 3);

                    Equipa equipa = new Equipa(id_equipa, nome, id_pais, id_modalidade);
                    i = i + 4;
                    eq.add(equipa);                                       
                }
                return eq;
            }
        }
        return null;
    }

}

